<?php
class TipoMarcasController extends AppController {

	var $name = 'TipoMarcas';
	var $appModule = 'Maestros';
	var $helpers = array('Html','Form','Ajax','Javascript','Paginator','GetList');
	var $components = array('RequestHandler');
	var $pageTitle = 'ADC corporation';
	var $paginate = array('order' => array('TipoMarca.id' => 'DESC'));

	function index($q = null){
		$conditions['TipoMarca.activo']=1;
		//verificando si se hizo busqueda por formulario
                $q = $this->getBusqueda($this->data['TipoMarca']['busqueda']);
		if(!empty($q)){
			$conditions['OR'] = array(
				'TipoMarca.descripcion SIMILAR TO' => "%($q)%",
				'TipoMarca.codigo SIMILAR TO'=>$q
			);
		}
		
        if (!empty($this->params['url']['limite']))
			{$this->limite = $this->params['url']['limite'];}
		$this->data['TipoMarca']['pagesize']=$this->paginate['limit']=$this->limite;
		$data = $this->paginate($conditions);
		$this->set('q',$q);
		$this->set('tipos', $data);
        $this->set('limite', $this->limite);
	}

	function view($id = null) {
		if (!$id) {
			$this->flash(__('Invalid TipoMarca', true), array('action'=>'index'));
		}
		$this->set('tipoMarca', $this->TipoMarca->read(null, $id));
	}

	function add() {
		$grupos_conditions = array('Grupo.activo'=>1);
		$grupos = array();
		
		if (!empty($this->data)) {
			
			$this->data['TipoMarca']['usuario_creacion_id'] = $this->_usuario['id'];
			$this->data['TipoMarca']['usuario_borrado_id'] = $this->_usuario['id'];
			$this->data['TipoMarca']['usuario_modificacion_id'] = $this->_usuario['id'];
			$this->data['TipoMarca']['fecha_cracion'] = 'now()';
			$this->data['TipoMarca']['activo'] = 1;
			
			$this->TipoMarca->begin();
			$this->TipoMarca->create();
			if ($this->TipoMarca->save($this->data)) {
				if(empty($this->data['TipoMarcaGrupo']['id'])){
					$this->TipoMarca->rollback();
					$this->Session->setFlash('Debe seleccionar al menos un grupo');
				} else {
					$status = true;
					$data = array(
						'tipo_marca_id'=>$this->TipoMarca->id,
						'activo'=>1,
						'usuario_creacion_id' => $this->_usuario['id'],
						'fecha_creacion' => 'now()'
					);
					foreach($this->data['TipoMarcaGrupo']['id'] as $id){
						$this->TipoMarca->TipoMarcaGrupo->create();
						$data['grupo_id'] = $id;
						if(!$this->TipoMarca->TipoMarcaGrupo->save($data)){
							$status = false;
							break;
						}
					}
					if($status){
						$this->TipoMarca->commit();
						$this->Session->setFlash('El tipo de marca fue registrado correctamente');
						$this->redirect(array('action'=>'index'),null,true);
					} else {
						$this->TipoMarca->rollback();
						$this->Session->setFlash('Hubo un error al guardar un grupo asociado');
					}
				}
			} else {
				$this->TipoMarca->rollback();
				$this->Session->setFlash('No se pudo guardar el tipo de marca');
			}
			if(!empty($this->data['TipoMarcaGrupo']['id'])){
				//pasando grupos seleccionados
				$grupos = $this->TipoMarca->TipoMarcaGrupo->Grupo->find('list',array(
					'conditions'=>array('Grupo.id'=>$this->data['TipoMarcaGrupo']['id'])
				));
				//filtrando los grupos no seleccionados
				$grupos_conditions['NOT']['Grupo.id'] = $this->data['TipoMarcaGrupo']['id'];
			}
		}

		$grupos_disp = $this->TipoMarca->TipoMarcaGrupo->Grupo->find('list',array(
			'conditions'=>$grupos_conditions
		));
		$this->set('gruposDisps',$grupos_disp);
		$this->set('grupos',$grupos);
	}

	function edit($id = null) {
		if (!$id && empty($this->data)) {
			$this->Session->setFlash('El tipo de marca no existe o fue borrado');
			$this->redirect(array('action'=>'index'));
		}
		$grupos_conditions = array('Grupo.activo'=>1);
		$grupos = array();
		
		if (!empty($this->data)) {
			$this->TipoMarca->begin();
			if ($this->TipoMarca->save($this->data)) {
				//borrando registros existentes
				$this->TipoMarca->TipoMarcaGrupo->deleteAll(array('tipo_marca_id'=>$this->data['TipoMarca']['id']), false);
				//guardando nuevos registros
				$status = true;
				$data = array(
					'tipo_marca_id'=>$this->TipoMarca->id,
					'activo'=>1,
					'usuario_creacion_id' => $this->_usuario['id'],
					'fecha_creacion' => 'now()'
				);
				
				foreach($this->data['TipoMarcaGrupo']['id'] as $id){
					$this->TipoMarca->TipoMarcaGrupo->create();
					$data['grupo_id'] = $id;
					if(!$this->TipoMarca->TipoMarcaGrupo->save($data)){
						$status = false;
						break;
					}
				}
				if($status){
					$this->TipoMarca->commit();
					$this->Session->setFlash('El tipo de marca fue actualizado correctamente');
					$this->redirect(array('action'=>'index'),null,true);
				} else {
					$this->TipoMarca->rollback();
					$this->Session->setFlash('Hubo un error al guardar un grupo asociado');
				}
			} else {
				$this->TipoMarca->rollback();
				$this->Session->setFlash('El tipo de marca no pudo ser guardado');
			}
			$grupos = $this->data['TipoMarcaGrupo']['id'];
			$grupos_conditions['NOT']['Grupo.id'] = $grupos;
		} else {
			$this->TipoMarca->Behaviors->attach('Containable');
			$this->data = $this->TipoMarca->find('first',array(
				'conditions'=>array('TipoMarca.id'=>$id),
				'fields'=>array('id', 'codigo', 'descripcion'),
				'contain'=>array(
					'TipoMarcaGrupo.grupo_id'
				)
			));
			if(!empty($this->data['TipoMarcaGrupo'])){
				foreach($this->data['TipoMarcaGrupo'] as $i=>$val){
					$grupos[$i]=$val['grupo_id'];
				}
				$grupos_conditions['NOT']['Grupo.id'] = $grupos;
			}
		}
		
		$grupos_disp = $this->TipoMarca->TipoMarcaGrupo->Grupo->find('list',array(
			'conditions'=>$grupos_conditions
		));
		$this->set('gruposDisps',$grupos_disp);
		
		if(count($grupos)){
			$grupos_select = $this->TipoMarca->TipoMarcaGrupo->Grupo->find('list', array('conditions'=>array(
				'Grupo.activo'=>1, 'Grupo.id'=>$grupos
			)));
		} else {
			$grupos_select = '';
		}
		$this->set('grupos',$grupos_select);
	}

	function delete($id=null){
        $this->autoRender = false;
        $this->autoLayout = false;
		
        if (!$id && empty($this->data)) {
			$this->Session->setFlash('debe seleccionar registros para eliminar');
			$this->redirect(array('action'=>'index'),null,true);
        }
        if(!empty($this->data)){
			$mensaje = 'debe seleccionar registros para eliminar';
			foreach($this->data['TipoMarca'] as $id=>$val){
				if(!empty($val)){
					if($this->do_delete($id)){
						$mensaje = 'los registros seleccionados fueron eliminaros correctamente';
					} else {
						$mensaje = 'hubo un error al intentar eliminar uno de los registros';
						break;
					}
				}
			}
		} else {
			if($this->do_delete($id)){
				$mensaje = 'el registro fue eliminado correctamente';
			} else {
				$mensaje = 'hubo un error al intentar eliminar el registro';
			}
		}
		$this->Session->setFlash($mensaje);
		$this->redirect(array('action'=>'index'),null,true);
    }
	
	private function do_delete($id=null){
		if(!$id){
			return false;
		}
		$data['TipoMarca']['id']=$id;
        $data['TipoMarca']['activo']=0;
        $data['TipoMarca']['usuario_borrado_id']=$this->_usuario['id'];
        $data['TipoMarca']['fecha_borrado']='now()';

        if ($this->TipoMarca->save($data)){
			return true;
        } else {
			return false;
		}
	}
	

}
?>